#pragma once

#include <Windows.h>
#include <xnamath.h>


namespace TestDX
{
class Camera
{
public:
	Camera();
	~Camera();

	inline void SetPosition(float, float, float);
	inline void SetRotation(float, float, float);

	inline const XMFLOAT3 & GetPosition();
	inline const XMFLOAT3 & GetRotation();

	inline const XMFLOAT4X4 * GetViewMatrix();

	void Render();

private:
	// Copy and assign are forbidden
	Camera(const Camera &);
	Camera & operator=(const Camera &);

	// Attribs
	XMFLOAT3 _position;
	XMFLOAT3 _rotation;

	XMFLOAT4X4 _viewMatrix;
};

void Camera::SetPosition(float x, float y, float z)
{
	_position = XMFLOAT3(x, y, z);
}
void Camera::SetRotation(float rx, float ry, float rz)
{
	_rotation = XMFLOAT3(rx, ry, rz);
}


const XMFLOAT3 & Camera::GetPosition()
{
	return _position;
}

const XMFLOAT3 & Camera::GetRotation()
{
	return _rotation;
}

const XMFLOAT4X4 * Camera::GetViewMatrix()
{
	return &_viewMatrix;
}

}